<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /**
         *  map: 映射
         *  作用：从原来的数组，长度元素个数不变，映射成一个新的数组
         */
        let arr = [1,2,3]
        let newArr = arr.map(item=>{
            return item * 2;
        })
        console.log(newArr)

        /**
         * filter: 过滤
         * 应用：根据一定的条件，将数组中符合条件的（return true），保留下来，组成一个新的数组
         */
        let friends = [
            {
                name:'迪丽热吧',
                scort:98
            },
            {
                name:'古力娜扎',
                scort:92
            },
            {
                name:'宋小宝',
                scort:30
            }
        ]
        console.log(friends.filter(item=>item.scort >= 90))

        /**
         * reduce:
         * 数组累计求和的操作，考虑使用
         * 
         */
        let todos = [
            {
                id:1,
                title:'吃饭',
                isDone:false
            },
            {
                id:2,
                title:'睡觉',
                isDone:false
            },
            {
                id:3,
                title:'打豆豆',
                isDone:false
            }
        ]

        // todos.reduce((pre,cur)=>{
        //     // 次数      pre      cur                                   return 
        //     //  1.       100      {id:1,title:'吃饭',isDone:true}         99
        //     //  2.       99       {id:2,title:'睡觉',isDone:true}         99
        //     //  3.       99
        //     console.log(pre,cur)
        //     return 99;
        // },100)

        let total = todos.reduce((pre,cur)=>{
            // return pre + (cur.isDone ? 1 : 0)
            return pre + cur.isDone
            // 次数   pre    累加     return
            //  1      0      1         1
            //  2      1      1         2
            //  3      2      0         2
        },0)
        console.log('total: ', total)
        console.log('total:', todos.reduce((pre,cur)=>pre + cur.isDone,0))


        /**
         *  some: 返回一个boolean
         *  只要有一个满足的就位真
         * 
         *  需求：如果今天的事情都完成了，那么成功
         */
        console.log(todos.some(item=>item.isDone))

        /**
         *  every:返回一个boolean
         * 所有都符合才为真，只要有一个不符合就为假
         * 
         */
        console.log(todos.every(item=>item.isDone))

        /**
         * 
         *  find ：查找数组中第一个符合条件的那一项返回
         *  
         */
        console.log(friends.find(item=>item.scort >= 90))

        /**
         * findIndex : 查找数组中第一个符合条件的元素的索引值
         * 
         */

         console.log(friends.findIndex(item=>item.scort <=60))


         friends.find(item=>{
            console.log('回调函数this',this)
         })
    </script>
</body>
</html>